package com.jlf.controller.engine.entity.field;

import com.jlf.core.engine.constant.SchemaConstant;
import com.jlf.core.engine.domain.SchemaFieldDO;
import lombok.Getter;
import lombok.Setter;

/**
 * 文件注释
 *
 * @author wujr
 * 2023/7/18
 * @version 1.0
 * 【变更历史】
 * [wujr 2023/7/18 1.0 新增]
 */
@Getter
@Setter
public class FieldDetail {
    private Long id;
    /**
     * 数据类型
     * 在生成的领域模型中的字段数据类型 {@link SchemaConstant.Java.Type}
     */
    private Integer classDataType;
    /**
     * 字段编码
     * 用于生成的模型的属性
     */
    private String classFieldCode;
    /**
     * 字段显示名称
     * 用于展示
     */
    private String displayName;
    /**
     * 数据库字段编码
     * 用于生成的数据库的字段
     * 空表示使用code自动生成
     */
    private String jdbcFieldCode;
    /**
     * 在数据库中数据类型 {@link SchemaConstant.Jdbc.Type}
     */
    private Integer jdbcFieldType;
    /**
     * 数据长度
     * 用于数据库中建表定义数据长度
     */
    private Integer jdbcFieldLength;
    /**
     * 是否允许为空
     */
    private Boolean jdbcNullable;
    /**
     * 默认值
     */
    private String defaultValue;
    private Integer status;
    private Integer priority;

    public FieldDetail(SchemaFieldDO record) {
        this.id = record.getId();
        this.classDataType = record.getClassDataType();
        this.classFieldCode = record.getClassFieldCode();
        this.displayName = record.getDisplayName();
        this.jdbcFieldCode = record.getJdbcFieldCode();
        this.jdbcFieldType = record.getJdbcFieldType();
        this.jdbcFieldLength = record.getJdbcFieldLength();
        this.jdbcNullable = record.getJdbcNullable();
        this.defaultValue = record.getDefaultValue();
        this.status = record.getStatus();
        this.priority = record.getPriority();
    }
}
